JDBC -> ORACLE
Publicado por Reinhold Main (3 intervenciones) el 14/05/2003 07:12:37
Resulta que estoy haciendo un applet de Java que se conecta por medio de JDBC a una base de datos oracle
Resumiendo mi codigo en la conexion a oracle:
Class.forName("oracle.jdbc.driver.OracleDriver"); // este es un driver que baje de oracle de jdbc para Java 1.4,
// tambien lo tengo declarado en el CLASSPATH.
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ROBOTECH","rick","robotech"); // lo conecto con el SID que es ROBOTECH
// rick es el nombre de usuario, y robotech es el password el listener esta configurado y el tnsname tambien !!!
Asta aqui anda impecable, pero al momento de hacer una consulta SQL en el codigo o al tratar de conectarse se cae y no muestra ningun resultado el applet.
ABRO LA CONSOLA DE JAVA DEL EXPLORADOR y dice ...
java.security.AccessControlException: access denied (java.util.PropertyPermission oracle.jserver.version read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1291)
at java.lang.System.getProperty(System.java:572)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:433)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at appletP.oracle.jbInit(oracle.java:50)
at appletP.oracle.init(oracle.java:28)
at opera.PluginPanel.run(PluginPanel.java:411)
at java.lang.Thread.run(Thread.java:536)
Averiguando con la poca documentacion de esto, pense que el problema era del "java.policy", politicas de seguridad de java. Y asi hay que editar un archivo llamado java.policy, que en algunas partes dice que debe estar en el directorio $HOME/.java.policy (ejem /home/rick/.java.policy) y en otros sitios dice que esta en el $JRE_HOME/lib/security/java.policy (ejem /usr/java/j2re1.4/lib/security/java.policy).
Bueno en la segunda ruta esta ese famoso archivo java.policy, y lo edito y le pongo esto ... (tambien lo copio al directorio $HOME)
grant {
permission java.security.AllPermission;
permission java.net.SocketPermission "*:1024-65535", "connect,accept,resolve"; //siendo que el * es cualquier ip, y luego el rango del puerto
permission java.net.SocketPermission "*:80","connect";
permission java.util.PropertyPermission "oracle.jserver.version", "read"; // y esto que nose para que esta, pero me sale en el error, asi que le puse la opcion read
permission java.lang.RuntimePermission "modifyThreadGroup";
permission java.lang.RuntimePermission "modifyThread";
permission java.io.FilePermission "/html/java/-", "read"; // esto es por que en una pagina salia que pusieras la ruta de tus archivos de java que se abren
};
BUENO DESPUES DE TODO ESTO TODAVIA NO ENTIENDO COMO PODER CONECTARME A ORACLE desde un applet y JDBC, siendo que con el driver de mysql para jdbc y EL MISMO CODIGO me anduvo impecable la lectura de la base de datos.
Mi teoria es que en la base de datos hay que agregarle un permiso de java (ALGUN GRANT), y eso yo no lo se por que no tengo idea de conceptos de DBA, y si uds supieran algun datito que me sirviera para seguir buscando me ayudaria harto.
GRACIAS POR SU GRAN AYUDA !!
Resumiendo mi codigo en la conexion a oracle:
Class.forName("oracle.jdbc.driver.OracleDriver"); // este es un driver que baje de oracle de jdbc para Java 1.4,
// tambien lo tengo declarado en el CLASSPATH.
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ROBOTECH","rick","robotech"); // lo conecto con el SID que es ROBOTECH
// rick es el nombre de usuario, y robotech es el password el listener esta configurado y el tnsname tambien !!!
Asta aqui anda impecable, pero al momento de hacer una consulta SQL en el codigo o al tratar de conectarse se cae y no muestra ningun resultado el applet.
ABRO LA CONSOLA DE JAVA DEL EXPLORADOR y dice ...
java.security.AccessControlException: access denied (java.util.PropertyPermission oracle.jserver.version read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1291)
at java.lang.System.getProperty(System.java:572)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:433)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at appletP.oracle.jbInit(oracle.java:50)
at appletP.oracle.init(oracle.java:28)
at opera.PluginPanel.run(PluginPanel.java:411)
at java.lang.Thread.run(Thread.java:536)
Averiguando con la poca documentacion de esto, pense que el problema era del "java.policy", politicas de seguridad de java. Y asi hay que editar un archivo llamado java.policy, que en algunas partes dice que debe estar en el directorio $HOME/.java.policy (ejem /home/rick/.java.policy) y en otros sitios dice que esta en el $JRE_HOME/lib/security/java.policy (ejem /usr/java/j2re1.4/lib/security/java.policy).
Bueno en la segunda ruta esta ese famoso archivo java.policy, y lo edito y le pongo esto ... (tambien lo copio al directorio $HOME)
grant {
permission java.security.AllPermission;
permission java.net.SocketPermission "*:1024-65535", "connect,accept,resolve"; //siendo que el * es cualquier ip, y luego el rango del puerto
permission java.net.SocketPermission "*:80","connect";
permission java.util.PropertyPermission "oracle.jserver.version", "read"; // y esto que nose para que esta, pero me sale en el error, asi que le puse la opcion read
permission java.lang.RuntimePermission "modifyThreadGroup";
permission java.lang.RuntimePermission "modifyThread";
permission java.io.FilePermission "/html/java/-", "read"; // esto es por que en una pagina salia que pusieras la ruta de tus archivos de java que se abren
};
BUENO DESPUES DE TODO ESTO TODAVIA NO ENTIENDO COMO PODER CONECTARME A ORACLE desde un applet y JDBC, siendo que con el driver de mysql para jdbc y EL MISMO CODIGO me anduvo impecable la lectura de la base de datos.
Mi teoria es que en la base de datos hay que agregarle un permiso de java (ALGUN GRANT), y eso yo no lo se por que no tengo idea de conceptos de DBA, y si uds supieran algun datito que me sirviera para seguir buscando me ayudaria harto.
GRACIAS POR SU GRAN AYUDA !!
Valora esta pregunta


0